-
Notifications
You must be signed in to change notification settings - Fork 59
Introducing FlytePropeller TURBO Mode #minor #219
Conversation
- Turbo mode in FlytePropeller
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sweet!
pkg/controller/config/config.go
Outdated
@@ -74,6 +74,7 @@ type Config struct { | |||
MaxDatasetSizeBytes int64 `json:"max-output-size-bytes" pflag:",Maximum size of outputs per task"` | |||
KubeConfig KubeClientConfig `json:"kube-client-config" pflag:",Configuration to control the Kubernetes client"` | |||
NodeConfig NodeConfig `json:"node-config,omitempty" pflag:",config for a workflow node"` | |||
EnableFastFollow bool `json:"enable-fast-follow" pflag:",Boolean flag that enables Fast Follow mode, this makes Propeller proceed to another round on successful write to etcD."` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: formatting seems to have more spaces... tabs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
will fix formatting
pkg/controller/config/config.go
Outdated
@@ -74,6 +76,8 @@ type Config struct { | |||
MaxDatasetSizeBytes int64 `json:"max-output-size-bytes" pflag:",Maximum size of outputs per task"` | |||
KubeConfig KubeClientConfig `json:"kube-client-config" pflag:",Configuration to control the Kubernetes client"` | |||
NodeConfig NodeConfig `json:"node-config,omitempty" pflag:",config for a workflow node"` | |||
EnableTurboMode bool `json:"enable-turbo-mode" pflag:",Boolean flag that enables Turbo-mode, this makes Propeller proceed to another round on successful write to etcD."` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we really have two flags? or just have it enabled all the time and use MaxStreakLength <= 1
meaning it essentially has no effect?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that is interesting
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left a couple of comments to write a bit more code docs...
TL;DR
This PR adds a new configuration to FlytePropeller which is enabled by default. This improves the transition latency of FlytePropeller by an order of magnitude or more. Absolute comparison to come soon.
Type
Are all requirements met?
Complete description
Currently FlytePropeller event loop is designed to make the smallest forward progress in each round. There are cases in which the round progress is purely book-keeping. For example moving a workflow from accepted to Running state. Moving a node from new to queued to running state. This is done so that state is resilient from crashes.
the turbo mode, essentially waits for the one of these rounds to complete and optimistically progresses to the next round using the updated state. To add safety to the optimistic progress we can configure bounds.
The psuedo algorithm
Tracking Issue
flyteorg/flyte#676